package com.all.mqtt.provide;

import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;
import org.eclipse.paho.client.mqttv3.MqttCallback;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;

/**
 * @Author LY
 * @create 2024/3/1 16:09
 * @Description mqtt provider 回调
 */
public class MqttProviderCallBack implements MqttCallback {

    /**
     * 客户端断开连接的回调
     */
    @Override
    public void connectionLost(Throwable throwable) {
        System.out.println("生产者 与服务器断开连接，可重连");
    }

    /**
     * 消息到达的回调
     */
    @Override
    public void messageArrived(String topic, MqttMessage message) throws Exception {
        System.out.println(String.format("生产者 接收消息主题 : %s",topic));
        System.out.println(String.format("生产者 接收消息Qos : %d",message.getQos()));
        System.out.println(String.format("生产者 接收消息内容 : %s",new String(message.getPayload())));
        System.out.println(String.format("生产者 接收消息retained : %b",message.isRetained()));
    }

    /**
     * 消息发布成功的回调
     */
    @Override
    public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
        try {
            System.out.println(String.format("生产者 发布消息成功：") + new String(iMqttDeliveryToken.getMessage().getPayload()));
        } catch (MqttException e) {
            throw new RuntimeException(e);
        }
    }
}
